package com.lifesea.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class GhPatientExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public GhPatientExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andPatIdIsNull() {
            addCriterion("PAT_ID is null");
            return (Criteria) this;
        }

        public Criteria andPatIdIsNotNull() {
            addCriterion("PAT_ID is not null");
            return (Criteria) this;
        }

        public Criteria andPatIdEqualTo(Integer value) {
            addCriterion("PAT_ID =", value, "patId");
            return (Criteria) this;
        }

        public Criteria andPatIdNotEqualTo(Integer value) {
            addCriterion("PAT_ID <>", value, "patId");
            return (Criteria) this;
        }

        public Criteria andPatIdGreaterThan(Integer value) {
            addCriterion("PAT_ID >", value, "patId");
            return (Criteria) this;
        }

        public Criteria andPatIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("PAT_ID >=", value, "patId");
            return (Criteria) this;
        }

        public Criteria andPatIdLessThan(Integer value) {
            addCriterion("PAT_ID <", value, "patId");
            return (Criteria) this;
        }

        public Criteria andPatIdLessThanOrEqualTo(Integer value) {
            addCriterion("PAT_ID <=", value, "patId");
            return (Criteria) this;
        }

        public Criteria andPatIdIn(List<Integer> values) {
            addCriterion("PAT_ID in", values, "patId");
            return (Criteria) this;
        }

        public Criteria andPatIdNotIn(List<Integer> values) {
            addCriterion("PAT_ID not in", values, "patId");
            return (Criteria) this;
        }

        public Criteria andPatIdBetween(Integer value1, Integer value2) {
            addCriterion("PAT_ID between", value1, value2, "patId");
            return (Criteria) this;
        }

        public Criteria andPatIdNotBetween(Integer value1, Integer value2) {
            addCriterion("PAT_ID not between", value1, value2, "patId");
            return (Criteria) this;
        }

        public Criteria andPatNameIsNull() {
            addCriterion("PAT_NAME is null");
            return (Criteria) this;
        }

        public Criteria andPatNameIsNotNull() {
            addCriterion("PAT_NAME is not null");
            return (Criteria) this;
        }

        public Criteria andPatNameEqualTo(String value) {
            addCriterion("PAT_NAME =", value, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameNotEqualTo(String value) {
            addCriterion("PAT_NAME <>", value, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameGreaterThan(String value) {
            addCriterion("PAT_NAME >", value, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameGreaterThanOrEqualTo(String value) {
            addCriterion("PAT_NAME >=", value, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameLessThan(String value) {
            addCriterion("PAT_NAME <", value, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameLessThanOrEqualTo(String value) {
            addCriterion("PAT_NAME <=", value, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameLike(String value) {
            addCriterion("PAT_NAME like", value, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameNotLike(String value) {
            addCriterion("PAT_NAME not like", value, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameIn(List<String> values) {
            addCriterion("PAT_NAME in", values, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameNotIn(List<String> values) {
            addCriterion("PAT_NAME not in", values, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameBetween(String value1, String value2) {
            addCriterion("PAT_NAME between", value1, value2, "patName");
            return (Criteria) this;
        }

        public Criteria andPatNameNotBetween(String value1, String value2) {
            addCriterion("PAT_NAME not between", value1, value2, "patName");
            return (Criteria) this;
        }

        public Criteria andPatGenderIsNull() {
            addCriterion("PAT_GENDER is null");
            return (Criteria) this;
        }

        public Criteria andPatGenderIsNotNull() {
            addCriterion("PAT_GENDER is not null");
            return (Criteria) this;
        }

        public Criteria andPatGenderEqualTo(String value) {
            addCriterion("PAT_GENDER =", value, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderNotEqualTo(String value) {
            addCriterion("PAT_GENDER <>", value, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderGreaterThan(String value) {
            addCriterion("PAT_GENDER >", value, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderGreaterThanOrEqualTo(String value) {
            addCriterion("PAT_GENDER >=", value, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderLessThan(String value) {
            addCriterion("PAT_GENDER <", value, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderLessThanOrEqualTo(String value) {
            addCriterion("PAT_GENDER <=", value, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderLike(String value) {
            addCriterion("PAT_GENDER like", value, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderNotLike(String value) {
            addCriterion("PAT_GENDER not like", value, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderIn(List<String> values) {
            addCriterion("PAT_GENDER in", values, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderNotIn(List<String> values) {
            addCriterion("PAT_GENDER not in", values, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderBetween(String value1, String value2) {
            addCriterion("PAT_GENDER between", value1, value2, "patGender");
            return (Criteria) this;
        }

        public Criteria andPatGenderNotBetween(String value1, String value2) {
            addCriterion("PAT_GENDER not between", value1, value2, "patGender");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeIsNull() {
            addCriterion("IDCARD_TYPE is null");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeIsNotNull() {
            addCriterion("IDCARD_TYPE is not null");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeEqualTo(Integer value) {
            addCriterion("IDCARD_TYPE =", value, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeNotEqualTo(Integer value) {
            addCriterion("IDCARD_TYPE <>", value, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeGreaterThan(Integer value) {
            addCriterion("IDCARD_TYPE >", value, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeGreaterThanOrEqualTo(Integer value) {
            addCriterion("IDCARD_TYPE >=", value, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeLessThan(Integer value) {
            addCriterion("IDCARD_TYPE <", value, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeLessThanOrEqualTo(Integer value) {
            addCriterion("IDCARD_TYPE <=", value, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeIn(List<Integer> values) {
            addCriterion("IDCARD_TYPE in", values, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeNotIn(List<Integer> values) {
            addCriterion("IDCARD_TYPE not in", values, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeBetween(Integer value1, Integer value2) {
            addCriterion("IDCARD_TYPE between", value1, value2, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardTypeNotBetween(Integer value1, Integer value2) {
            addCriterion("IDCARD_TYPE not between", value1, value2, "idcardType");
            return (Criteria) this;
        }

        public Criteria andIdcardIsNull() {
            addCriterion("IDCARD is null");
            return (Criteria) this;
        }

        public Criteria andIdcardIsNotNull() {
            addCriterion("IDCARD is not null");
            return (Criteria) this;
        }

        public Criteria andIdcardEqualTo(String value) {
            addCriterion("IDCARD =", value, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardNotEqualTo(String value) {
            addCriterion("IDCARD <>", value, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardGreaterThan(String value) {
            addCriterion("IDCARD >", value, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardGreaterThanOrEqualTo(String value) {
            addCriterion("IDCARD >=", value, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardLessThan(String value) {
            addCriterion("IDCARD <", value, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardLessThanOrEqualTo(String value) {
            addCriterion("IDCARD <=", value, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardLike(String value) {
            addCriterion("IDCARD like", value, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardNotLike(String value) {
            addCriterion("IDCARD not like", value, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardIn(List<String> values) {
            addCriterion("IDCARD in", values, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardNotIn(List<String> values) {
            addCriterion("IDCARD not in", values, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardBetween(String value1, String value2) {
            addCriterion("IDCARD between", value1, value2, "idcard");
            return (Criteria) this;
        }

        public Criteria andIdcardNotBetween(String value1, String value2) {
            addCriterion("IDCARD not between", value1, value2, "idcard");
            return (Criteria) this;
        }

        public Criteria andBirthdayIsNull() {
            addCriterion("BIRTHDAY is null");
            return (Criteria) this;
        }

        public Criteria andBirthdayIsNotNull() {
            addCriterion("BIRTHDAY is not null");
            return (Criteria) this;
        }

        public Criteria andBirthdayEqualTo(Date value) {
            addCriterionForJDBCDate("BIRTHDAY =", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayNotEqualTo(Date value) {
            addCriterionForJDBCDate("BIRTHDAY <>", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayGreaterThan(Date value) {
            addCriterionForJDBCDate("BIRTHDAY >", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("BIRTHDAY >=", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayLessThan(Date value) {
            addCriterionForJDBCDate("BIRTHDAY <", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("BIRTHDAY <=", value, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayIn(List<Date> values) {
            addCriterionForJDBCDate("BIRTHDAY in", values, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayNotIn(List<Date> values) {
            addCriterionForJDBCDate("BIRTHDAY not in", values, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("BIRTHDAY between", value1, value2, "birthday");
            return (Criteria) this;
        }

        public Criteria andBirthdayNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("BIRTHDAY not between", value1, value2, "birthday");
            return (Criteria) this;
        }

        public Criteria andPatMobileIsNull() {
            addCriterion("PAT_MOBILE is null");
            return (Criteria) this;
        }

        public Criteria andPatMobileIsNotNull() {
            addCriterion("PAT_MOBILE is not null");
            return (Criteria) this;
        }

        public Criteria andPatMobileEqualTo(String value) {
            addCriterion("PAT_MOBILE =", value, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileNotEqualTo(String value) {
            addCriterion("PAT_MOBILE <>", value, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileGreaterThan(String value) {
            addCriterion("PAT_MOBILE >", value, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileGreaterThanOrEqualTo(String value) {
            addCriterion("PAT_MOBILE >=", value, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileLessThan(String value) {
            addCriterion("PAT_MOBILE <", value, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileLessThanOrEqualTo(String value) {
            addCriterion("PAT_MOBILE <=", value, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileLike(String value) {
            addCriterion("PAT_MOBILE like", value, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileNotLike(String value) {
            addCriterion("PAT_MOBILE not like", value, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileIn(List<String> values) {
            addCriterion("PAT_MOBILE in", values, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileNotIn(List<String> values) {
            addCriterion("PAT_MOBILE not in", values, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileBetween(String value1, String value2) {
            addCriterion("PAT_MOBILE between", value1, value2, "patMobile");
            return (Criteria) this;
        }

        public Criteria andPatMobileNotBetween(String value1, String value2) {
            addCriterion("PAT_MOBILE not between", value1, value2, "patMobile");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusIsNull() {
            addCriterion("REAL_NAME_STATUS is null");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusIsNotNull() {
            addCriterion("REAL_NAME_STATUS is not null");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusEqualTo(String value) {
            addCriterion("REAL_NAME_STATUS =", value, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusNotEqualTo(String value) {
            addCriterion("REAL_NAME_STATUS <>", value, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusGreaterThan(String value) {
            addCriterion("REAL_NAME_STATUS >", value, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusGreaterThanOrEqualTo(String value) {
            addCriterion("REAL_NAME_STATUS >=", value, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusLessThan(String value) {
            addCriterion("REAL_NAME_STATUS <", value, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusLessThanOrEqualTo(String value) {
            addCriterion("REAL_NAME_STATUS <=", value, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusLike(String value) {
            addCriterion("REAL_NAME_STATUS like", value, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusNotLike(String value) {
            addCriterion("REAL_NAME_STATUS not like", value, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusIn(List<String> values) {
            addCriterion("REAL_NAME_STATUS in", values, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusNotIn(List<String> values) {
            addCriterion("REAL_NAME_STATUS not in", values, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusBetween(String value1, String value2) {
            addCriterion("REAL_NAME_STATUS between", value1, value2, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRealNameStatusNotBetween(String value1, String value2) {
            addCriterion("REAL_NAME_STATUS not between", value1, value2, "realNameStatus");
            return (Criteria) this;
        }

        public Criteria andRelationshipIsNull() {
            addCriterion("RELATIONSHIP is null");
            return (Criteria) this;
        }

        public Criteria andRelationshipIsNotNull() {
            addCriterion("RELATIONSHIP is not null");
            return (Criteria) this;
        }

        public Criteria andRelationshipEqualTo(Short value) {
            addCriterion("RELATIONSHIP =", value, "relationship");
            return (Criteria) this;
        }

        public Criteria andRelationshipNotEqualTo(Short value) {
            addCriterion("RELATIONSHIP <>", value, "relationship");
            return (Criteria) this;
        }

        public Criteria andRelationshipGreaterThan(Short value) {
            addCriterion("RELATIONSHIP >", value, "relationship");
            return (Criteria) this;
        }

        public Criteria andRelationshipGreaterThanOrEqualTo(Short value) {
            addCriterion("RELATIONSHIP >=", value, "relationship");
            return (Criteria) this;
        }

        public Criteria andRelationshipLessThan(Short value) {
            addCriterion("RELATIONSHIP <", value, "relationship");
            return (Criteria) this;
        }

        public Criteria andRelationshipLessThanOrEqualTo(Short value) {
            addCriterion("RELATIONSHIP <=", value, "relationship");
            return (Criteria) this;
        }

        public Criteria andRelationshipIn(List<Short> values) {
            addCriterion("RELATIONSHIP in", values, "relationship");
            return (Criteria) this;
        }

        public Criteria andRelationshipNotIn(List<Short> values) {
            addCriterion("RELATIONSHIP not in", values, "relationship");
            return (Criteria) this;
        }

        public Criteria andRelationshipBetween(Short value1, Short value2) {
            addCriterion("RELATIONSHIP between", value1, value2, "relationship");
            return (Criteria) this;
        }

        public Criteria andRelationshipNotBetween(Short value1, Short value2) {
            addCriterion("RELATIONSHIP not between", value1, value2, "relationship");
            return (Criteria) this;
        }

        public Criteria andStatusIsNull() {
            addCriterion("STATUS is null");
            return (Criteria) this;
        }

        public Criteria andStatusIsNotNull() {
            addCriterion("STATUS is not null");
            return (Criteria) this;
        }

        public Criteria andStatusEqualTo(Short value) {
            addCriterion("STATUS =", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotEqualTo(Short value) {
            addCriterion("STATUS <>", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThan(Short value) {
            addCriterion("STATUS >", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusGreaterThanOrEqualTo(Short value) {
            addCriterion("STATUS >=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThan(Short value) {
            addCriterion("STATUS <", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusLessThanOrEqualTo(Short value) {
            addCriterion("STATUS <=", value, "status");
            return (Criteria) this;
        }

        public Criteria andStatusIn(List<Short> values) {
            addCriterion("STATUS in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotIn(List<Short> values) {
            addCriterion("STATUS not in", values, "status");
            return (Criteria) this;
        }

        public Criteria andStatusBetween(Short value1, Short value2) {
            addCriterion("STATUS between", value1, value2, "status");
            return (Criteria) this;
        }

        public Criteria andStatusNotBetween(Short value1, Short value2) {
            addCriterion("STATUS not between", value1, value2, "status");
            return (Criteria) this;
        }
    }

    /**
     * This class was generated by MyBatis Generator.
     * This class corresponds to the database table gh_patient
     *
     * @mbggenerated do_not_delete_during_merge
     */
    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}